使用论坛里裸跑 Framebuffer,原始代码只使用了Display Engine种back-end模块的Layer0图层.使用外部2个vbuf作为缓存。DEbe可以支持4个图层的alpha和叠加等操作。这里测试了下,使用2个图层Layer0 和 Layer1。关闭alpha,只用了叠加(color key)。效果参考视频。 修改部分主要是 f1c100s_debe_set_mode 函数设置Debe的模式,就可以了。 inline static void f1c100s_debe_set_mode(fb_f1c100s_pdata_t * pdat)
{
struct f1c100s_debe_reg_t * debe = (struct f1c100s_debe_reg_t *)(pdat->virtdebe);
uint32_t val;
// F1C200s DEbe模块使用双图层 //
// 是能 DEbe模块 //
val = read32((virtual_addr_t)&debe->mode);
val |= (1 mode, val);
// 显示尺寸 //
write32((virtual_addr_t)&debe->disp_size, (((pdat->height) - 1) width) - 1) backcolor, (0x00503050) );
// 颜色KEY //
write32((virtual_addr_t)&debe->color_key_max, (0x00FFFFFF) );
write32((virtual_addr_t)&debe->color_key_min, (0x00303030) );
write32((virtual_addr_t)&debe->color_key_config, (0x0000003F) );
// Layer0 设置 //
write32((virtual_addr_t)&debe->layer0_size, (((pdat->height) - 1) width) - 1) layer0_stride, ((pdat->width) layer0_addr_low32b, (uint32_t)(pdat->vram[0]) layer0_addr_high4b, (uint32_t)(pdat->vram[0]) >> 29);
write32((virtual_addr_t)&debe->layer0_attr1_ctrl, 0x09 layer0_attr0_ctrl, (0x80 vram[1]) layer1_addr_high4b, (uint32_t)(pdat->vram[1]) >> 29);
write32((virtual_addr_t)&debe->layer1_attr1_ctrl, 0x09 layer1_attr0_ctrl, (0xF0 |